package com.example.desarollo;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.example.desarollo.AddUsuario.asynclogin;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class Clave extends Activity {
	EditText user;
    EditText pass;
    EditText passr , passrr;
    EditText email;
    Button enviar;
    Httppostaux post;
    String IP_Server="186.4.149.247";//IP DE NUESTRO PC
    String URL_conexion="http://"+IP_Server+"/desarrollo/cambiocontra.php";//ruta en donde estan nuestros archivos
    boolean result_back;
    private ProgressDialog pDialog;
    String user1, useraux;
	TextView txt_usuario, logoff;
	Button cambiocontra;
    public void onCreate(Bundle savedInstanceState) {
		 
	       super.onCreate(savedInstanceState);
	       setContentView(R.layout.clave);
	       post=new Httppostaux();        
	       user= (EditText) findViewById(R.id.txtusuario);
	       pass= (EditText) findViewById(R.id.txtcontraanterior);
	       passr= (EditText) findViewById(R.id.txtcontranueva);
	       passrr=(EditText) findViewById(R.id.txtcontrarepetir2);
	       enviar= (Button) findViewById(R.id.btncambiarcontra);
	       
	       txt_usuario= (TextView) findViewById(R.id.usuariocuentaclave);         
	         
	       Bundle extras = getIntent().getExtras();
	         //Obtenemos datos enviados en el intent.
	         if (extras != null) {
	      	   user1  = extras.getString("user");//usuario
	      	   useraux=user1;
	         }else{
	      	   user1="error";
	      	   }
	         txt_usuario.setText(user1);
	         
	         enviar.setOnClickListener(new View.OnClickListener(){
		            
		        	public void onClick(View view){
		        		 
		        		//Extreamos datos de los EditText
		        		String usuario=txt_usuario.getText().toString();
		        		String passw=pass.getText().toString();
		        		String passwn=passr.getText().toString();
		        		//verificamos si estan en blanco
		        		if( checkadduser( usuario , passw, passwn )==true){

		        			//si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros
		        			
		        		new asynclogin().execute(usuario,passw,passwn);        		               
		        			      		
		        				        		
		        		}else{
		        			//si detecto un error en la primera validacion vibrar y mostrar un Toast con un mensaje de error.
		        			err_login();
		        		}
		        		
		        	}
		        													});
    }
    
    public boolean checkadduser(String username ,String password, String passnew ){
    	
	    if 	(username.equals("") || password.equals("") || passnew.equals("")){
	    	Log.e("Login ui", "Error en el ingreso de usuario o password");
	    return false;
	    
	    }else{
	    	
	    	return true;
	    }
	    
	}
 public void err_login(){
    	Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
	    vibrator.vibrate(200);
	    Toast toast1 = Toast.makeText(getApplicationContext(),"Error:Nombre de usuario o password incorrectos", Toast.LENGTH_SHORT);
 	    toast1.show();    	
    }
 
 class asynclogin extends AsyncTask< String, String, String > {
	 
    	String user,pass,passwn;
        protected void onPreExecute() {
        	//para el progress dialog
            pDialog = new ProgressDialog(Clave.this);
            pDialog.setMessage("Cambiando....");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }
 
		protected String doInBackground(String... params) {
			//obtnemos usr y pass
			user=params[0];
			pass=params[1];
			passwn=params[2];
			//enviamos y recibimos y analizamos los datos en segundo plano.
    		if (loginstatus(user,pass,passwn)==true){    		    		
    			return "ok"; //login valido
    		}else{    		
    			return "err"; //login invalido     	          	  
    		}
        	
		}
		/*Una vez terminado doInBackground segun lo que halla ocurrido 
		pasamos a la sig. activity
		o mostramos error*/
        protected void onPostExecute(String result) {

           pDialog.dismiss();//ocultamos progess dialog.
           Log.e("onPostExecute=",""+result);
           
           if (result.equals("ok")){

//				Intent i=new Intent(MainActivity.this, Principal.class);
//			//	i.putExtra("user",user);
//				startActivity(i); 
				
				Intent i = new Intent(Clave.this,Principal.class);
				// Closing all previous activities
				//i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				i.putExtra("user",useraux);
				startActivity(i);
				
            }else{
            	err_login();
            }
            
                									}
		
        }
 
 public boolean loginstatus(String username ,String password, String passwn ) {
    	int addstatus=0;
    	
    	/*Creamos un ArrayList del tipo nombre valor para agregar los datos recibidos por los parametros anteriores
    	 * y enviarlo mediante POST a nuestro sistema para relizar la validacion*/ 
    	ArrayList<NameValuePair> postparameters2send= new ArrayList<NameValuePair>();
     		
		    		postparameters2send.add(new BasicNameValuePair("usuario",username));
		    		postparameters2send.add(new BasicNameValuePair("password",password));
		    		postparameters2send.add(new BasicNameValuePair("passr",passwn));
		   //realizamos una peticion y como respuesta obtenes un array JSON
      		JSONArray jdata=post.getserverdata(postparameters2send, URL_conexion);

      		/*como estamos trabajando de manera local el ida y vuelta sera casi inmediato
      		 * para darle un poco realismo decimos que el proceso se pare por unos segundos para poder
      		 * observar el progressdialog
      		 * la podemos eliminar si queremos
      		 */
		    SystemClock.sleep(950);
		    		
		    //si lo que obtuvimos no es null
		    	if (jdata!=null && jdata.length() > 0){

		    		JSONObject json_data; //creamos un objeto JSON
					try {
						json_data = jdata.getJSONObject(0); //leemos el primer segmento en nuestro caso el unico
						 addstatus=json_data.getInt("success");//accedemos al valor 
						 Log.e("addstatus","success= "+addstatus);//muestro por log que obtuvimos
					} catch (JSONException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}	            
					
		             
					//validamos el valor obtenido
		    		 if (addstatus==0){// [{"logstatus":"0"}] 
		    			 Log.e("addstatus ", "invalido");
		    			 return false;
		    		 }
		    		 else{// [{"logstatus":"1"}]
		    			 Log.e("addstatus ", "valido");
		    			 return true;
		    		 }
		    		 
			  }else{	//json obtenido invalido verificar parte WEB.
		    			 Log.e("JSON  ", "ERROR");
			    		return false;
			  }
    	
    }
    
}
